package tpv;

/**
 *
 * @author david
 */
public interface Regla
{
    public static final double SIN_DESCUENTO = 0.0;

    /**
     * Devuelve el descuento que proporciona la regla si es aplicable, pero
     * no modifica las lineas de la venta.
     * @param venta Venta sobre la que se quiere aplicar la regla
     * @return 
     */
    public double getPorcentaje(Venta venta);
    /**
     * Determina si la regla se puede aplicar a la venta.
     * @param venta Venta sobre la que se quiere aplicar la regla.
     * @return 
     */
    public boolean isAplicable(Venta venta);
    /**
     * Devuele el descuento que proporciona la regla si es aplicable, y lo
     * aplica a las lineas de la venta.
     * @param venta Venta sobre la que se quiere aplicar la regla
     * @return Descuento acumulado en tanto por uno.
     */
    public double aplicar(Venta venta);

}
